//package com.ia.aistream.manager.operating.util;
//import com.alibaba.fastjson.JSONObject;
//import com.ia.aistream.common.utils.StringUtils;
//import com.ia.aistream.manager.operating.conf.DocMapConf;
//import com.ia.aistream.manager.operating.util.style.DocStyleUtil;
//import com.ia.aistream.model.operating.entity.*;
//import com.spire.doc.*;
//import com.spire.doc.collections.DocumentObjectCollection;
//import com.spire.doc.collections.SectionCollection;
//import com.spire.doc.documents.DocumentObjectType;
//import com.spire.doc.documents.Paragraph;
//import java.io.*;
//import java.util.*;
//
//
///**
//// * @Author xiaoyu
// * @create 2020/12/15 18:29
// */
//public class DocTest {
//    public static Map<String,Object> tableorparagraph(Section sections, String fileName) throws Exception {
//        Map<String,Object> map=new HashMap<String,Object>();
//        int index=0;
//        //保存标题的位置 标题前的段落从0（标题位置）-1 -2起算  标题后的从 0 1 2
//        int titleIndex=0;
//        List<DocContentParagraph> list=new ArrayList<DocContentParagraph>();
//        DocTitle docTitle=null;
//            DocumentObjectCollection docs = sections.getBody().getChildObjects();
//            for (int j = 0; j < docs.getCount(); j++) {
//                if (docs.get(j).getDocumentObjectType().equals(DocumentObjectType.Table)){
//                    Table table=(Table)docs.get(j);
//                    tables(table);
//                }else if (docs.get(j).getDocumentObjectType().equals(DocumentObjectType.Paragraph)){
//                    Paragraph paragraph=(Paragraph)docs.get(j);
//                    int title = DocStyleUtil.isTitle(paragraph);
//                    List texts = texts(paragraph, index, fileName);
//                    index++;
//                    for (int k = 0; k < texts.size(); k++) {
//                         if (DocStyleUtil.isTitle(paragraph)==1){
//                             docTitle = (DocTitle) texts.get(k);
//                             titleIndex=j;
//                             break;
//                         }else {
//                             DocContentParagraph docContentParagraph = (DocContentParagraph) texts.get(k);
//                             list.add(docContentParagraph);
//                         }
//                    }
//                }
//            }
//        if (titleIndex>0){
//            List<DocContentParagraph> docContentParagraphList = list.subList(titleIndex, list.size());
////            docTitle.setTitleNum(0);
//            long i=1;
//            for (DocContentParagraph d : docContentParagraphList) {
//                d.setConNum((int) i++);
//            }
//            map.put(DocMapConf.DOC_TITLE.value,docTitle);
//            map.put(DocMapConf.DOC_PARAGRAPH_List.value,list);
//        }
//        return map;
//    }
//
//    /**
//     * 表格解析
//     * @param table
//     * @return
//     */
//    public static Map<String , Object> tables(Table table) throws UnsupportedEncodingException {
//        DocTitle title=new DocTitle();
//        List<DocContentTable> list=new ArrayList<DocContentTable>();
//        Map<String , Object> tableMap=new HashMap<>();
//        int cMax = getclos(table, 0);
//        for (int i = 0; i < table.getRows().getCount(); i++) {
//            if (table.getRows().get(i).getCells().getCount() <= cMax){
//                //循环列
//                DocContentTable tab=new DocContentTable();
//                for (int j = 0; j <table.getRows().get(i).getCells().getCount() ; j++) {
//                    String cellContent = DocIndex.getCellContent(table.getRows().get(i).getCells().get(j)).trim();
//                    if (StringUtils.isEmpty(cellContent)){
//                        continue;
//                    }
//                    if (DocStyleUtil.isTitle(table.getRows().get(i).getCells().get(j).getParagraphs().get(0))==1){
//                        //标题名称
//                        title.setTitleName(cellContent);
//                        //标题位置
////                        title.setTitleNum(i);
//                        //段落类型  1为表格   2为段落
////                        title.setTitleNum(1);
//                        continue;
//                    }
//                    tab.setStepId((long) j);
//                    tab.setRowType((long) 0);
//                    switch (j){
//                        case 0:
//                            tab.setC1O(cellContent);
//                            tab.setC1Style(DocStyleUtil.getColumnStyle(table,i,j));
//                            break;
//                        case 1:
//                            tab.setC2O(cellContent);
//                            tab.setC2Style(DocStyleUtil.getColumnStyle(table,i,j));
//                            break;
//                        case 2:
//                            tab.setC3O(cellContent);
//                            tab.setC3Style(DocStyleUtil.getColumnStyle(table,i,j));
//                            break;
//                        case 3:
//                            tab.setC4O(cellContent);
//                            tab.setC4Style(DocStyleUtil.getColumnStyle(table,i,j));
//                            break;
//                        case 4:
//                            tab.setC5O(cellContent);
//                            tab.setC5Style(DocStyleUtil.getColumnStyle(table,i,j));
//                            break;
//                        default:
//                            System.err.println("表格解析失败");
//                            break;
//                    }
//                    list.add(tab);
//                }
//            }else {
//                cMax = getclos(table, i);
//                i--;
//            }
//        }
//        tableMap.put(DocMapConf.DOC_TITLE.value,title);
//        tableMap.put(DocMapConf.DOC_TABLE_LIST.value,list);
//        return tableMap;
//    }
//
//    public static int getclos(Table table, int rows){
//        //记录5行中的最大列
//        int cMax=0;
//        if (table.getRows().getCount()>=rows+5) {
//
//                for (int j = rows; j < rows+5; j++) {
//                    int count = table.getRows().get(j).getCells().getCount();
//                    if (count > cMax) {
//                        cMax = count;
//                    }
//                }
//        }else {
//            for (int j = rows; j < table.getRows().getCount(); j++) {
//                int count = table.getRows().get(j).getCells().getCount();
//                if (count > cMax) {
//                    cMax = count;
//                }
//            }
//        }
//
//        return cMax;
//    }
//
//
//    /**
//     * 段落解析
//     * @param paragraph 段落对象
//     * @param index 当前位置
//     * @return
//     */
//    public static List texts(Paragraph paragraph, long index, String fileName) throws Exception {
//        String listText = paragraph.getListText();
//        String text = paragraph.getText();
//        JSONObject paragraphStyle = (JSONObject) JSONObject.toJSON(DocStyleUtil.getParagraphStyle(paragraph, fileName, 0,null, null));
//        List list=new ArrayList();
//        Integer conType=0;
//        if (text != null && text !=""){
//            conType=1;
//        }
//        text=listText+" "+text;
//        //0表示内容 1表示1级标题   2表示其他级别标题
//        switch (DocStyleUtil.isTitle(paragraph)){
//            case 2:
//                DocContentParagraph docContentParagraph=new DocContentParagraph();
//                //段落顺序
//                docContentParagraph.setConNum((int) index);
//                //段落类型  0：内容，1：标题、2：空行
//                docContentParagraph.setConType(1);
//                //段落顺序
//                docContentParagraph.setContentStyle(paragraphStyle);
//                //段落内容
//                docContentParagraph.setContent(text);
//                list.add(docContentParagraph);
//                break;
//            case 0:
//                docContentParagraph=new DocContentParagraph();
//                //段落顺序
//                docContentParagraph.setConNum((int) index);
//                //段落类型  0：内容，1：标题、2：空行
//                docContentParagraph.setConType(0);
//                //段落顺序
//                docContentParagraph.setContentStyle(paragraphStyle);
//                //段落内容
//                docContentParagraph.setContent(text);
//                list.add(docContentParagraph);
//                break;
//            case 1:
//                DocTitle title=new DocTitle();
//                //标题名称
//                title.setTitleName(text);
//                //标题样式
//                title.setTitleNameStyle(paragraphStyle);
//                //标题序号
////                title.setTitleNum((int) index);
//                //段落类型  1为表格   2为段落
//                title.setTitleType(2);
//                //关联对应文件的id
//                list.add(title);
//                break;
//            default:
//                System.err.println("段落解析失败");
//                break;
//        }
//        return list;
//    }
//    /***
//     * 获取整个文档的需要信息
//     * @param fileName
//     * @return
//     * @throws Exception
//     */
//    public static Map<String, Object> getDocFileData(String fileName,String ext) throws Exception {
//        // 创建Word文档对象
//        Document document = new Document();
//        document.loadFromFile(fileName);
//
//        Map<String, Object> map = new HashMap<>();
//        // 获取
//        SectionCollection sections = document.getSections();
//        for(int i=0; i<sections.getCount(); i++){
//            if(i == 0){
//                // 获取文件主信息
//                Map<String, Object> indexMap = DocIndex.docIndex(sections.get(i), fileName,ext, 0);
//                map.putAll(indexMap);
//            }else if(i == 1){
//                // 获取规程修改跟踪信息
//                List<DocRev> docTrackingList = DocIndex.docTracking(sections.get(i), null);
//                map.put(DocMapConf.DOC_REV_LIST.value, docTrackingList);
//            }else{
//                // 获取段落的内容
//                Map<String, Object> tableorparagraph = tableorparagraph(sections.get(i), fileName);
//            }
//        }
//        return map;
//    }
//
//}
